package com.sojson.dao;

import java.sql.SQLException;
import java.util.ArrayList;

import com.sojson.base.BaseDao;
import com.sojson.entity.po.RoleMenu;

/**
 * 角色和菜单关联表Dao
 * 
 * @author liu
 * @date 2021-04-13
 */
public interface RoleMenuDao extends BaseDao<RoleMenu> {

    /**
     * 通过menuId删除(物理删除)
     * 
     * @param menuId
     * @return
     * @throws SQLException
     */
    int deleteByMenuId(Integer menuId);

    /**
     * 通过menuId列表删除(物理删除)
     * 
     * @param menuIds
     * @return
     * @throws SQLException
     */
    int deleteByMenuIdList(ArrayList<Integer> menuIds);

    /**
     * 通过menuId更新(全部更新)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updateByMenuId(RoleMenu roleMenu);

    /**
     * 通过menuId列表更新(全部更新)(更新内容相同)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updateStaticByMenuIdList(RoleMenu roleMenu);

    /**
     * 通过menuId列表更新(全部更新)(更新内容不相同)
     * 
     * @param roleMenus
     * @return
     * @throws SQLException
     */
    int updateChangeByMenuIdList(ArrayList<RoleMenu> roleMenus);

    /**
     * 通过menuId更新(局部更新)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updatePartialByMenuId(RoleMenu roleMenu);

    /**
     * 通过menuId列表更新(局部更新)(更新内容相同)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updateStaticPartialByMenuIdList(RoleMenu roleMenu);

    /**
     * 通过menuId列表更新(局部更新)(更新内容不相同)
     * 
     * @param roleMenus
     * @return
     * @throws SQLException
     */
    int updateChangePartialByMenuIdList(ArrayList<RoleMenu> roleMenus);

    /**
     * 通过menuId查询
     * 
     * @param menuId
     * @return
     * @throws SQLException
     */
    RoleMenu findByMenuId(Integer menuId);

    /**
     * 通过menuId列表查询
     * 
     * @param menuIds
     * @return
     * @throws SQLException
     */
    ArrayList<RoleMenu> findByMenuIdList(ArrayList<Integer> menuIds);

    /**
     * 通过对象查询menuId列表
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    ArrayList<Integer> findMenuIdByDto(RoleMenu roleMenu);

    /**
     * 清空数据(物理清空)
     * 
     * @throws SQLException
     */
    void clear();

    /**
     * 查询菜单是否存在角色
     *
     * @param menuId 菜单ID
     * @return
     */
    int checkMenuExistRole(Integer menuId);

    /**
     * 通过roleId删除
     * 
     * @param roleId
     * @return
     */
    int deleteByRoleId(Integer roleId);

}